package com.zhentao.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * 参数变更日志DTO
 * @author zhentao
 * @date 2024-12-19
 */
@Data
public class ParamChangeLogDTO {
    
    /**
     * 变更类型：CREATE-创建，UPDATE-更新，DELETE-删除，STATUS-状态变更
     */
    @NotBlank(message = "变更类型不能为空")
    private String changeType;
    
    /**
     * 目标类型：PARAM_DEFINITION-参数定义，PARAM_VALUE-参数值，PARAM_RULE-参数规则，PARAM_CATEGORY-参数分类
     */
    @NotBlank(message = "目标类型不能为空")
    private String targetType;
    
    /**
     * 目标ID
     */
    @NotNull(message = "目标ID不能为空")
    private Long targetId;
    
    /**
     * 目标标识（如参数键、规则编码等）
     */
    private String targetKey;
    
    /**
     * 目标名称
     */
    private String targetName;
    
    /**
     * 变更前的值，JSON格式
     */
    private String oldValue;
    
    /**
     * 变更后的值，JSON格式
     */
    private String newValue;
    
    /**
     * 变更原因/备注
     */
    private String changeReason;
    
    /**
     * 变更人
     */
    private String changeBy;
    
    /**
     * 变更IP地址
     */
    private String changeIp;
    
    /**
     * 用户代理信息
     */
    private String userAgent;
    
    /**
     * 业务来源：WEB-网页，API-接口，SYSTEM-系统，BATCH-批量
     */
    private String businessSource;
    
    /**
     * 关联的业务ID（可选）
     */
    private String businessId;
}

